package com.pilipala.mapper;

import com.github.pagehelper.Page;
import com.pilipala.dto.CommentChildDTO;
import com.pilipala.dto.CommentDTO;
import com.pilipala.entity.Comment;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface CommentMapper {

    /**
     * 批量列出评论
     * @param commentDTO 被评论类的Id、页码、页大小获取评论
     * @return 分页后的  --基础的评论字段和评论人的头像
     */
    Page<Comment> getByMetaId(CommentDTO commentDTO);


    /**
     * 添加评论
     * @param comment 评论数据
     */
    void add(Comment comment);


    /**
     * 搜索子评论数量
     * @param id 父评论Id
     * @return 返回数量
     */
    @Select("select count(0) from comment where sub_commit_id = #{id}")
    Integer countChild(Long id);

    /**
     * 获取子评论
     * @param commentChildDTO 页码、页数、媒体id、父评论id
     * @return 返回分页后的结果
     */
    Page<Comment> listChild(CommentChildDTO commentChildDTO);

    @Select("select * from comment where id = #{id}")
    Comment getById(Long id);

    @Delete("delete from comment where id = #{id}")
    void deleteSubComment(Long id);

    @Delete("delete from comment where sub_commit_id = #{id}")
    void deleteChild(Long id);

}
